JavaScriptã®ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ååãæ¢æ±ããã¹ã±ãŒã©ãã«ã§ä¿å®ã»ãã¹ãã容æãªã¢ããªãæ§ç¯ãã³ãŒãæ§æãäŸåé¢ä¿ç®¡çãã¢ãžã¥ãŒã«ãã¿ãŒã³ã®ãã¹ããã©ã¯ãã£ã¹ãåŠã³ãŸãã
JavaScriptã³ãŒãæ§æãã¬ãŒã ã¯ãŒã¯ïŒã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã¬ã€ãã©ã€ã³
é²åãç¶ãããŠã§ãéçºã®äžçã«ãããŠãJavaScriptã¯äŸç¶ãšããŠäžå¿çãªååšã§ããã¢ããªã±ãŒã·ã§ã³ãè€éåããã«ã€ããŠãé©åã«æ§é åãããã³ãŒãããŒã¹ã¯ãä¿å®æ§ãã¹ã±ãŒã©ããªãã£ãããã³å ±åäœæ¥ã«ãšã£ãŠäžå¯æ¬ ã«ãªããŸããã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã¯ãJavaScriptã³ãŒããç¬ç«ãããåå©çšå¯èœã§ã管çããããåäœã«æŽçããããã®åŒ·åãªãã¬ãŒã ã¯ãŒã¯ãæäŸããŸãããã®èšäºã§ã¯ãã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã®ååãããŸããŸãªã¢ãžã¥ãŒã«ãã¿ãŒã³ãäŸåé¢ä¿ç®¡çæŠç¥ããããŠå ç¢ã§ã¹ã±ãŒã©ãã«ãªJavaScriptã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®ãã¹ããã©ã¯ãã£ã¹ã«ã€ããŠæ¢æ±ããŸãã
ãªãã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ãªã®ãïŒ
ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã«ã¯ãããã€ãã®éèŠãªå©ç¹ããããŸãïŒ
- ä¿å®æ§ã®åäžïŒ ã¢ãžã¥ãŒã«ã¯ç¹å®ã®æ©èœãã«ãã»ã«åãããããã³ãŒãã®çè§£ãä¿®æ£ããããã°ã容æã«ãªããŸããããã¢ãžã¥ãŒã«ã§ã®å€æŽããã¢ããªã±ãŒã·ã§ã³ã®ä»ã®éšåã«åœ±é¿ãäžããå¯èœæ§ãäœããªããŸãã
- åå©çšæ§ã®åŒ·åïŒ ã¢ãžã¥ãŒã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãéšåããããã«ã¯ç°ãªããããžã§ã¯ãã§åå©çšã§ãããããã³ãŒãã®å¹çæ§ãåäžããåé·æ§ãåæžãããŸãã
- ãã¹ãå®¹ææ§ã®åäžïŒ ç¬ç«ããã¢ãžã¥ãŒã«ã¯åé¢ããŠãã¹ãããã®ã容æã§ãããããä¿¡é Œæ§ãé«ãå ç¢ãªã³ãŒãã«ã€ãªãããŸãã
- å ±åäœæ¥ã®æ¹åïŒ ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã«ãããè€æ°ã®éçºè ãäºãã®äœæ¥ã劚ããããšãªããç°ãªãã¢ãžã¥ãŒã«ã§åæã«äœæ¥ã§ããŸãã
- è€éæ§ã®è»œæžïŒ å€§èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ãããå°ãã管çããããã¢ãžã¥ãŒã«ã«åå²ããããšã§ãã³ãŒãããŒã¹å šäœã®è€éæ§ã軜æžãããçè§£ãšä¿å®ã容æã«ãªããŸãã
- ã¹ã±ãŒã©ããªãã£ïŒ ã¢ãžã¥ã©ãŒã¢ããªã±ãŒã·ã§ã³ã¯ãæ¢åã®æ©èœã劚ããããšãªãç¬ç«ããã¢ãžã¥ãŒã«ãšããŠæ°æ©èœã远å ã§ãããããã¹ã±ãŒãªã³ã°ã容æã§ãã
ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã®åå
广çãªã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ãæ¯ãããããã€ãã®éèŠãªååããããŸãïŒ
- é¢å¿ã®åé¢ïŒ åã¢ãžã¥ãŒã«ã¯ãåäžã®æç¢ºã«å®çŸ©ããã責åãæã€ã¹ãã§ãããã®ååã¯ã³ãŒãã®æçæ§ãé«ããã¢ãžã¥ãŒã«éã®çµåãæžãããŸãã
- é«åéåºŠïŒ ã¢ãžã¥ãŒã«å ã®èŠçŽ ã¯å¯æ¥ã«é¢é£ããç¹å®ã®ç®æšãéæããããã«é£æºããŠåäœãã¹ãã§ãã
- ççµåïŒ ã¢ãžã¥ãŒã«ã¯å¯èœãªéãç¬ç«ããŠããã¹ãã§ãä»ã®ã¢ãžã¥ãŒã«ãžã®äŸåãæå°éã«æããã¹ãã§ããããã«ãããã¢ãžã¥ãŒã«ã®åå©çšãåé¢ãã¹ãã容æã«ãªããŸãã
- æœè±¡åïŒ ã¢ãžã¥ãŒã«ã¯ãå éšã®å®è£ 詳现ãé èœããä»ã®ã¢ãžã¥ãŒã«ã«å¿ èŠãªæ å ±ã®ã¿ãå ¬éãã¹ãã§ããããã«ãããã¢ãžã¥ãŒã«ã®å éšåäœãä¿è·ãããä»ã®ã¢ãžã¥ãŒã«ã«åœ±é¿ãäžããããšãªã倿Žãå¯èœã«ãªããŸãã
- æ å ±é èœïŒ å éšã®ç¶æ ãšå®è£ ã®è©³çްã¯ã¢ãžã¥ãŒã«å ã§ãã©ã€ããŒãã«ä¿ã¡ãŸããä»ã®ã¢ãžã¥ãŒã«ãšã®å¯Ÿè©±ã«ã¯ãæç¢ºã«å®çŸ©ãããã€ã³ã¿ãŒãã§ãŒã¹ã®ã¿ãå ¬éããŸãã
JavaScriptã«ãããã¢ãžã¥ãŒã«ãã¿ãŒã³
JavaScriptã«ã¯ã¢ãžã¥ãŒã«ãäœæããããã®ããã€ãã®ãã¿ãŒã³ããããŸããããã§ã¯äžè¬çãªã¢ãããŒãã®æŠèŠãããã€ã玹ä»ããŸãïŒ
1. 峿å®è¡é¢æ°åŒ (IIFE)
IIFEã¯ãJavaScriptã§ã¢ãžã¥ãŒã«ãäœæããããã®å€å žçãªæ¹æ³ã§ãããã©ã€ããŒãã¹ã³ãŒããäœæããIIFEå ã§å®çŸ©ããã倿°ã颿°ãã°ããŒãã«ã¹ã³ãŒããæ±æããã®ãé²ããŸãã
(function() {
// Private variables and functions
var privateVariable = "This is private";
function privateFunction() {
console.log(privateVariable);
}
// Public interface
window.myModule = {
publicFunction: function() {
privateFunction();
}
};
})();
myModule.publicFunction(); // Output: This is private
äŸïŒ ãŠãŒã¶ãŒèªèšŒãåŠçããã¢ãžã¥ãŒã«ãèããŠã¿ãŸããããIIFEã¯ãèªèšŒããžãã¯ããŠãŒã¶ãŒè³æ Œæ å ±ãä¿åããããã®ãã©ã€ããŒã倿°ãããã³ãã°ã€ã³ã»ãã°ã¢ãŠãã®ããã®ãããªãã¯ã€ã³ã¿ãŒãã§ãŒã¹ãã«ãã»ã«åã§ããŸãã
2. CommonJS
CommonJSã¯ãäž»ã«Node.jsã§äœ¿çšãããã¢ãžã¥ãŒã«ã·ã¹ãã ã§ããã¢ãžã¥ãŒã«ãã€ã³ããŒãããããã«`require()`颿°ã䜿çšããå€ããšã¯ã¹ããŒãããããã«`module.exports`ãªããžã§ã¯ãã䜿çšããŸãã
// myModule.js
var privateVariable = "This is private";
function privateFunction() {
console.log(privateVariable);
}
module.exports = {
publicFunction: function() {
privateFunction();
}
};
// main.js
var myModule = require('./myModule');
myModule.publicFunction(); // Output: This is private
äŸïŒ CommonJSã¢ãžã¥ãŒã«ã¯ããã¡ã€ã«ã®èªã¿åããæžã蟌ã¿ãåé€ã®æ©èœãæäŸãããã¡ã€ã«ã·ã¹ãã æäœã管çã§ããŸããä»ã®ã¢ãžã¥ãŒã«ã¯ããã®ã¢ãžã¥ãŒã«ãã€ã³ããŒãããŠãã¡ã€ã«ã·ã¹ãã ã¿ã¹ã¯ãå®è¡ã§ããŸãã
3. éåæã¢ãžã¥ãŒã«å®çŸ© (AMD)
AMDã¯ããã©ãŠã¶ã§ã®ã¢ãžã¥ãŒã«ã®éåæèªã¿èŸŒã¿çšã«èšèšãããŠããŸããã¢ãžã¥ãŒã«ãå®çŸ©ãããã®äŸåé¢ä¿ãæå®ããããã«`define()`颿°ã䜿çšããŸãã
// myModule.js
define(function() {
var privateVariable = "This is private";
function privateFunction() {
console.log(privateVariable);
}
return {
publicFunction: function() {
privateFunction();
}
};
});
// main.js (using RequireJS)
require(['./myModule'], function(myModule) {
myModule.publicFunction(); // Output: This is private
});
äŸïŒ ç»ååŠçãæ±ãã¢ãžã¥ãŒã«ãæ³åããŠã¿ãŠãã ãããAMDã䜿çšãããšããã®ã¢ãžã¥ãŒã«ãéåæã«èªã¿èŸŒãããšãã§ããç»ååŠçã©ã€ãã©ãªã®èªã¿èŸŒã¿äžã«ã¡ã€ã³ã¹ã¬ããããããã¯ãããã®ãé²ããŸãã
4. ESã¢ãžã¥ãŒã« (ECMAScript Modules)
ESã¢ãžã¥ãŒã«ã¯ãJavaScriptã®ãã€ãã£ããªã¢ãžã¥ãŒã«ã·ã¹ãã ã§ããäŸåé¢ä¿ã管çããããã«`import`ããã³`export`ããŒã¯ãŒãã䜿çšããŸããESã¢ãžã¥ãŒã«ã¯ãææ°ã®ãã©ãŠã¶ãšNode.jsïŒ`--experimental-modules`ãã©ã°ã䜿çšãããã`.mjs`æ¡åŒµåã䜿çšïŒã§ãµããŒããããŠããŸãã
// myModule.js
const privateVariable = "This is private";
function privateFunction() {
console.log(privateVariable);
}
export function publicFunction() {
privateFunction();
}
// main.js
import { publicFunction } from './myModule.js';
publicFunction(); // Output: This is private
äŸïŒ ESã¢ãžã¥ãŒã«ã¯ããã¿ã³ããã©ãŒã ãã¢ãŒãã«ãªã©ã®åã ã®ã³ã³ããŒãã³ãããšã¯ã¹ããŒãããŠããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ãŒã¹ã³ã³ããŒãã³ãã管çã§ããŸããä»ã®ã¢ãžã¥ãŒã«ã¯ããããã®ã³ã³ããŒãã³ããã€ã³ããŒãããŠã¢ããªã±ãŒã·ã§ã³ã®UIãæ§ç¯ã§ããŸãã
äŸåé¢ä¿ç®¡ç
äŸåé¢ä¿ç®¡çã¯ãã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã®éèŠãªåŽé¢ã§ããããã«ã¯ãã¢ãžã¥ãŒã«éã®äŸåé¢ä¿ãæŽçãã管çããããšãå«ãŸããŸãã以äžã«ããã€ãã®éèŠãªèæ ®äºé ã瀺ããŸãïŒ
- æç€ºçãªäŸåé¢ä¿ïŒ åã¢ãžã¥ãŒã«ã®äŸåé¢ä¿ãæç¢ºã«å®çŸ©ããŸããããã«ãããã¢ãžã¥ãŒã«éã®é¢ä¿ãçè§£ããæœåšçãªç«¶åãç¹å®ãããããªããŸãã
- äŸåæ§ã®æ³šå ¥ïŒ ã¢ãžã¥ãŒã«ãçŽæ¥ã€ã³ããŒããŸãã¯äœæããã®ã§ã¯ãªããäŸåé¢ä¿ããã©ã¡ãŒã¿ãšããŠã¢ãžã¥ãŒã«ã«æž¡ããŸããããã«ãããççµåãä¿é²ãããã¢ãžã¥ãŒã«ã®ãã¹ãã容æã«ãªããŸãã
- ããã±ãŒãžãããŒãžã£ãŒïŒ npmïŒNode Package ManagerïŒãyarnãªã©ã®ããã±ãŒãžãããŒãžã£ãŒã䜿çšããŠãå€éšã®äŸåé¢ä¿ã管çããŸãããããã®ããŒã«ã¯ãäŸåé¢ä¿ã®ã€ã³ã¹ããŒã«ãæŽæ°ã管çã®ããã»ã¹ãèªååããŸãã
- ããŒãžã§ã³ç®¡çïŒ Gitãªã©ã®ããŒãžã§ã³ç®¡çã·ã¹ãã ã䜿çšããŠãäŸåé¢ä¿ãžã®å€æŽã远跡ãããã¹ãŠã®éçºè ãåãããŒãžã§ã³ã®ã©ã€ãã©ãªã䜿çšããŠããããšãä¿èšŒããŸãã
ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã®ãã¹ããã©ã¯ãã£ã¹
JavaScriptã§ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ãèšèšããã³å®è£ ããããã®ãã¹ããã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãïŒ
- æç¢ºãªããžã§ã³ããå§ããïŒ ã³ãŒãã£ã³ã°ãå§ããåã«ãã¢ããªã±ãŒã·ã§ã³ã®å šäœçãªæ§é ãå®çŸ©ããäž»èŠãªã¢ãžã¥ãŒã«ãç¹å®ããŸãã
- ã¢ãžã¥ãŒã«ãå°ãããçŠç¹ãçµãïŒ åã¢ãžã¥ãŒã«ã¯ãåäžã®æç¢ºã«å®çŸ©ããã責åãæã€ã¹ãã§ããå€§èŠæš¡ã§ã¢ããªã·ãã¯ãªã¢ãžã¥ãŒã«ãäœæããããšã¯é¿ããŠãã ããã
- æç¢ºãªã€ã³ã¿ãŒãã§ãŒã¹ãå®çŸ©ããïŒ åã¢ãžã¥ãŒã«ã¯ãä»ã®ã¢ãžã¥ãŒã«ãšã©ã®ããã«çžäºäœçšããããèŠå®ãããæç¢ºã«å®çŸ©ãããã€ã³ã¿ãŒãã§ãŒã¹ãæã€ã¹ãã§ãã
- äžè²«ããã¢ãžã¥ãŒã«ãã¿ãŒã³ã䜿çšããïŒ ã¢ãžã¥ãŒã«ãã¿ãŒã³ïŒäŸïŒESã¢ãžã¥ãŒã«ãCommonJSïŒãéžæããã¢ããªã±ãŒã·ã§ã³å šäœã§ãããäžè²«ããŠäœ¿çšããŸãã
- åäœãã¹ããæžãïŒ åã¢ãžã¥ãŒã«ã«å¯ŸããŠåäœãã¹ããæžãããããåé¢ãããç¶æ ã§æ£ããæ©èœããããšã確èªããŸãã
- ã³ãŒããææžåããïŒ åã¢ãžã¥ãŒã«ã®ç®çãæ©èœãäŸåé¢ä¿ãææžåããŸãã
- 宿çã«ãªãã¡ã¯ã¿ãªã³ã°ããïŒ ã¢ããªã±ãŒã·ã§ã³ãé²åããã«ã€ããŠãã¯ãªãŒã³ã§ã¢ãžã¥ã©ãŒãªã¢ãŒããã¯ãã£ãç¶æããããã«ã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããŸãã
- åœéåïŒi18nïŒãšå°ååïŒl10nïŒãèæ ®ããïŒ ãŠãŒã¶ãŒåãã®ããã¹ããããŒã¿ãæ±ãã¢ãžã¥ãŒã«ãèšèšããéã¯ãç°ãªãèšèªãå°åã«ã©ã®ããã«é©å¿ãããããèæ ®ããŸããi18nãšl10nã®ããã«é©åãªã©ã€ãã©ãªããã¿ãŒã³ã䜿çšããŠãã ãããäŸãã°ãæ¥ä»ã衚瀺ããã¢ãžã¥ãŒã«ã¯ããŠãŒã¶ãŒã®ãã±ãŒã«ã«å¿ããŠãã©ãŒãããã§ããã¹ãã§ãã
- ã¿ã€ã ãŸãŒã³ãåŠçããïŒ æéã«ææãªããŒã¿ãæ±ãã¢ãžã¥ãŒã«ã¯ãã¿ã€ã ãŸãŒã³ãæèãããããã®éã§å€æããã¡ã«ããºã ãæäŸãã¹ãã§ãããã¹ãŠã®ãŠãŒã¶ãŒãåãã¿ã€ã ãŸãŒã³ã«ãããšä»®å®ããããšã¯é¿ããŠãã ããã
- æåçãªé æ ®ïŒ æåã«ãã£ãŠç°ãªãå¯èœæ§ã®ããããŒã¿ïŒäŸïŒæ°åãäœæãé貚ïŒãæ±ãã¢ãžã¥ãŒã«ã¯ããããã®å·®ç°ãé©åã«åŠçã§ããããã«èšèšãããã¹ãã§ãã
- ã¢ã¯ã»ã·ããªãã£ïŒA11yïŒïŒ ç¹ã«UIã³ã³ããŒãã³ããæ±ãã¢ãžã¥ãŒã«ããé害ãæã€äººã ã«ãã¢ããªã±ãŒã·ã§ã³ãå©çšå¯èœã«ãªãããã«ãã¢ã¯ã»ã·ããªãã£ã¬ã€ãã©ã€ã³ïŒäŸïŒWCAGïŒã«æºæ ããŠããããšã確èªããŠãã ããã
ã¢ãžã¥ã©ãŒãªJavaScriptã¢ãŒããã¯ãã£ã®äŸ
ããã€ãã®äººæ°ã®JavaScriptãã¬ãŒã ã¯ãŒã¯ãã©ã€ãã©ãªã¯ãã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ãæ¡çšããŠããŸãïŒ
- ReactïŒ ã¢ããªã±ãŒã·ã§ã³ã®åºæ¬çãªæ§æèŠçŽ ãšããŠã³ã³ããŒãã³ãã䜿çšããŸããã³ã³ããŒãã³ãã¯ç¬ç«ããåå©çšå¯èœãªã¢ãžã¥ãŒã«ã§ãããçµã¿åãããŠè€éãªUIãäœæã§ããŸãã
- AngularïŒ ã¢ãžã¥ãŒã«ãã³ã³ããŒãã³ãããµãŒãã¹ã«åºã¥ãã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ãæ¡çšããŠããŸããã¢ãžã¥ãŒã«ã¯é¢é£ããã³ã³ããŒãã³ãããµãŒãã¹ãã°ã«ãŒãåããã¢ããªã±ãŒã·ã§ã³ã«æç¢ºãªæ§é ãæäŸããŸãã
- Vue.jsïŒ ç¬èªã®ãã³ãã¬ãŒããããžãã¯ãã¹ã¿ã€ã«ãæã€èªå·±å®çµåã®ã¢ãžã¥ãŒã«ã§ããã³ã³ããŒãã³ãã®äœ¿çšãæšå¥šããŠããŸãã
- Node.jsïŒ CommonJSã¢ãžã¥ãŒã«ã«å€§ããäŸåããŠãããéçºè ã¯ã³ãŒããåå©çšå¯èœãªã¢ãžã¥ãŒã«ã«æŽçããäŸåé¢ä¿ã广çã«ç®¡çã§ããŸãã
çµè«
ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ã¯ãã¹ã±ãŒã©ãã«ã§ä¿å®ã»ãã¹ãã容æãªJavaScriptã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã«äžå¯æ¬ ã§ããã¢ãžã¥ã©ãŒèšèšã®ååãçè§£ããããŸããŸãªã¢ãžã¥ãŒã«ãã¿ãŒã³ãæ¢æ±ããäŸåé¢ä¿ç®¡çã®ãã¹ããã©ã¯ãã£ã¹ãæ¡çšããããšã§ãéçºè ã¯ä¿å®ãæ¡åŒµãå ±åäœæ¥ã容æãªãå ç¢ã§ããæŽçãããã³ãŒãããŒã¹ãäœæã§ããŸããã¢ãžã¥ãŒã«æ§ãæ¡çšããããšã¯ãããé«å質ãªãœãããŠã§ã¢ãšããå¹ççãªéçºããã»ã¹ã«ã€ãªãããŸãã
ãã®"å æ¬çãª"ã¬ã€ãã¯ãããªãã®JavaScriptãããžã§ã¯ãã§ã¢ãžã¥ã©ãŒã¢ãŒããã¯ãã£ãçè§£ããå®è£ ããããã®åŒ·åºãªåºç€ãæäŸããŸãããããã®ååãšãã¿ãŒã³ãã¢ããªã±ãŒã·ã§ã³ã®ç¹å®ã®ããŒãºã«åãããŠé©å¿ãããåžžã«ã³ãŒãæ§æã®æ¹åã«åªããããšãå¿ããªãã§ãã ããã